// utils/convertCentsToYuan.js
/**
 * 将金额从“分”转换为“元”，并保留指定的小数位。
 * 
 * 🧾 常用于前端展示金额（后端一般以分为单位存储）。
 *
 * @example
 * convertCentsToYuan(12345)        // "123.45"
 * convertCentsToYuan('999')        // "9.99"
 * convertCentsToYuan(10000, 0)     // "100"
 * convertCentsToYuan(null)         // "0.00"
 * convertCentsToYuan('abc')        // "0.00"
 *
 * @param {number|string} value - 金额（单位：分）。可传入字符串或数字。
 * @param {number} [decimals=2] - 保留的小数位数，默认 2。
 * @returns {string} 格式化后的金额字符串（单位：元）。
 */
export const convertCentsToYuan = (value, decimals = 2) => {
    // 1. 检查空值或无效数字
    if (value == null || value === '' || isNaN(Number(value))) {
        return (0).toFixed(decimals)
    }

    // 2. 转数字并处理
    const num = Number(value) / 100

    // 3. 避免浮点误差，如 0.1 + 0.2 ≠ 0.3 的情况
    const fixed = Math.round((num + Number.EPSILON) * Math.pow(10, decimals)) / Math.pow(10, decimals)

    // 4. 保留指定小数位
    return fixed.toFixed(decimals)
}
